import Vue from "vue";
import Qs from "qs";

export default function(app) {
  /**
   * paramsConnect() get请求url得拼接,会自动过滤掉无效参数，以免对后台的查询造成影响
   *
   * @param {String} url 需要拼接的url路径
   * @param {Object} obj 需要拼接的参数
   * @return {String} 拼接好的路径
   */
  Vue.paramsConnect = Vue.prototype.$paramsConnect = function(url, obj) {
    let newUrl = url + "?";
    Object.keys(obj).forEach(key => {
      if (obj[key] === 0 || obj[key]) {
        newUrl += `${key}=${obj[key]}&`;
      }
    });
    return newUrl.substr(0, newUrl.length - 1);
  };

  /**
   * paramsConvert()
   * 讲object参数转化为formData格式，虽然用qs简化许多，但是由于使用频繁，所以将其扩充为插件，方便调用
   *
   * @param {Object} obj 需要转化的参数对象
   * @return {formData}
   */
  Vue.paramsConvert = Vue.prototype.$paramsConvert = function(obj) {
    return Qs.stringify(obj);
  };

  /**
   * 替换url中的{}中的内容
   *
   * @param {String} url 需要替换的url
   * @param {Object} params 要替换值得对象
   *
   * @return {newUrl} 替换后得url
   */
  Vue.replaceUrl = Vue.prototype.$replaceUrl = function(url, params) {
    const reg = new RegExp("\\{(.+?)\\}", "g");
    return url.replace(reg, (str, key, index) => params[key]);
  };
}
